#include "bindingalgorithmregistrator.h"

#include "../utils/bindinggenerator.h"
#include "bruteforcebinding.h"
#include "intersectbinding.h"
#include "randombinding.h"
#include "simplebinding.h"
#include "simpleunboundbinding.h"

using namespace wfnet;

void BindingAlgorithmRegistrator::registrate()
{
    BruteForceBinding* bruteForceBinding = new BruteForceBinding();
    IntersectBinding* intersectBinding = new IntersectBinding();
    RandomBinding* randomBinding = new RandomBinding();
    SimpleBinding* simpleBinding = new SimpleBinding();
    SimpleUnboundBinding* simpleUnboundBinding = new SimpleUnboundBinding();

    BindingGenerator::getInstance()->registerBindingAlgorithm(
        COMPLEX_VAR_VAR, bruteForceBinding);
    BindingGenerator::getInstance()->registerBindingAlgorithm(
        SIMPLE_MUL_VAR, intersectBinding);
    BindingGenerator::getInstance()->registerBindingAlgorithm(
        COMPLEX_VAR_VAL, randomBinding);
    BindingGenerator::getInstance()->registerBindingAlgorithm(
        SIMPLE_VAR_ONLY, simpleBinding);
    BindingGenerator::getInstance()->registerBindingAlgorithm(
        SIMPLE_UNBOUND_VAR_ONLY, simpleUnboundBinding);
}
